import UserVisit from '../models/userVisit.model.js';

/**
 * 用户访问控制器
 * 处理用户访问记录相关的HTTP请求
 */
const UserVisitController = {
  /**
   * 根据用户ID和组件ID获取访问记录
   */
  getUserVisitByUserIdAndComponentId: async (req, res) => {
    try {
      const { userId, componentId } = req.params;
      const userVisit = await UserVisit.getByUserIdAndComponentId(userId, componentId);
      if (!userVisit) {
        return res.status(404).json({ error: '用户访问记录不存在' });
      }
      res.status(200).json(userVisit);
    } catch (error) {
      console.error('获取用户访问记录失败:', error);
      res.status(500).json({ error: '获取用户访问记录失败' });
    }
  },

  /**
   * 记录用户访问
   */
  recordUserVisit: async (req, res) => {
    try {
      const { userId, componentId, visitCount, lastVisitTime } = req.body;
      
      if (!userId || !componentId) {
        return res.status(400).json({ error: '缺少必要的参数' });
      }
      
      const result = await UserVisit.recordVisit({
        userId,
        componentId,
        visitCount: visitCount || 1,
        lastVisitTime: lastVisitTime || new Date()
      });
      
      res.status(200).json({
        message: '用户访问记录更新成功',
        data: result
      });
    } catch (error) {
      console.error('记录用户访问失败:', error);
      res.status(500).json({ error: '记录用户访问失败' });
    }
  },

  /**
   * 重置用户访问计数
   */
  resetUserVisitCount: async (req, res) => {
    try {
      const { userId, componentId } = req.params;
      const result = await UserVisit.resetVisitCount(userId, componentId);
      if (!result) {
        return res.status(404).json({ error: '用户访问记录不存在' });
      }
      res.status(200).json({ message: '用户访问计数重置成功' });
    } catch (error) {
      console.error('重置用户访问计数失败:', error);
      res.status(500).json({ error: '重置用户访问计数失败' });
    }
  },

  /**
   * 删除用户访问记录
   */
  deleteUserVisit: async (req, res) => {
    try {
      const { userId, componentId } = req.params;
      const result = await UserVisit.delete(userId, componentId);
      if (!result) {
        return res.status(404).json({ error: '用户访问记录不存在' });
      }
      res.status(200).json({ message: '用户访问记录删除成功' });
    } catch (error) {
      console.error('删除用户访问记录失败:', error);
      res.status(500).json({ error: '删除用户访问记录失败' });
    }
  }
};

export default UserVisitController;
